﻿package com.zouloux.utils 
{
	import flash.geom.Point;
	import org.papervision3d.core.math.Matrix3D;
	import org.papervision3d.core.proto.CameraObject3D;
	import org.papervision3d.objects.DisplayObject3D;
	
	/**
	 * ...
	 * @author ZoulouX
	 */
	public class ThreeDee 
	{
		// Mapper la position d'un point 3D sur un plan 2D
		public static function get2DCords (pDisplayObject3D:DisplayObject3D, pCamera:CameraObject3D, pOffsetX:Number = 0, pOffsetY:Number = 0, pMultiX:Number = 1, pMultiY:Number = 1):Point
        {
			// Récupérer la vue de l'objet 3D
            var view:Matrix3D = pDisplayObject3D.view;
			
			// Calculer la perspéctive par rapport à la caméra
            var persp:Number = (pCamera.focus * pCamera.zoom) / (pCamera.focus + view.n34);
			
			// Retourner le point 2D
            return new Point((view.n14 * persp) * pMultiX + pOffsetX, (view.n24 * persp) * pMultiX + pOffsetY);
        }
	}
}